使用callable接口的四个步骤 * 1.创建执行服务 * 2.提交执行服务 * 3.获取执行结果 * 4.关闭服务
package cn.usts.edu.lesson03;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.concurrent.*;
/**
* 使用callable接口
* 1.创建执行服务
* 2.提交执行服务
* 3.获取执行结果
* 4.关闭服务
* */
public class CallableDemo implements Callable {
String file;
String url;
String filename;
public CallableDemo(String file, String url) {
this.file = file;
this.url = url;
}
@Override
public Boolean call() {
= new ImageDownload();
ImageDownload imageDownload .downLoad(url,file);
imageDownload= file.split("\\\\")[11];//获取文件名
filename System.out.println(filename+"下载完成");
return true;
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
= new CallableDemo(
CallableDemo t1 "D:\\all_projects\\java_projects\\java_ij\\springMVC\\ThreadStudy\\src\\cn\\usts\\edu\\lesson01\\a.jpg"
,"https://bbs.qn.img-space.com/202110/18/1c3eb5a6f1d59adaa9b608c7da64d95a.jpg");
= new CallableDemo(
CallableDemo t2 "D:\\all_projects\\java_projects\\java_ij\\springMVC\\ThreadStudy\\src\\cn\\usts\\edu\\lesson01\\b.jpg"
,"https://bbs.qn.img-space.com/202110/18/6d254e56adf9094cc003c815d3d6d3e1.jpg");
= new CallableDemo(
CallableDemo t3 "D:\\all_projects\\java_projects\\java_ij\\springMVC\\ThreadStudy\\src\\cn\\usts\\edu\\lesson01\\c.jpg"
,"https://bbs.qn.img-space.com/202110/18/72d862d6074bb2edc1e6df61ce78455f.jpg"
);
// *1.创建执行服务
ExecutorService service = Executors.newFixedThreadPool(3);
// * 2.提交执行服务
Future<Boolean> r1 = service.submit(t1);
Future<Boolean> r2 = service.submit(t2);
Future<Boolean> r3 = service.submit(t3);
// * 3.获取执行结果
boolean rs1 = r1.get();
boolean rs2 = r2.get();
boolean rs3 = r3.get();
System.out.println(rs1);
System.out.println(rs2);
System.out.println(rs3);
// * 4.关闭服务
.shutdown();
service
}
}
class ImageDownload{
public void downLoad(String url,String file) {
try {
.copyURLToFile(new URL(url),new File(file));
FileUtils} catch (IOException e) {
.printStackTrace();
eSystem.out.println("downLoad()方法出错");
}
}
}